package main

import (
	"fmt"
	"sync"
)

// go语言中操作系统线程和goroutine关系
//	1、一个操作系统线程对应用户多个goroutine
//	2、go程序可以同时使用多个操作系统线程
//	3、goroutine和OS线程是多对多的关系，即 m ：n
import (
	"runtime"
	"time"
)

var wp sync.WaitGroup

func a() {
	for i := 1; i < 10; i++ {
		fmt.Println("A:", i)
	}
	wp.Done()
}

func b() {
	for i := 1; i < 10; i++ {
		fmt.Println("B:", i)
	}
	wp.Done()
}

func main() {
	//runtime.GOMAXPROCS(1) // go的1.5版本前默认使用一个单核运行，运行完一个接着下一个
	runtime.GOMAXPROCS(6) // 设置6核心，并发，gomaxprocs()函数设置当前程序并发是占用的cpu逻辑核心数
	wp.Add(2)
	go a()
	go b()
	time.Sleep(time.Second)
	wp.Wait()
}
